/**

 @Name：layuiAdmin iframe版核心模块
 @Author：贤心
 @Site：http://www.layui.com/admin/
 @License：LPPL

 */

layui.define('view', function(exports){
  var $ = layui.jquery
      ,laytpl = layui.laytpl
      ,element = layui.element
      ,setter = layui.setter
      ,view = layui.view
      ,device = layui.device()

      ,$win = $(window), $body = $('body')
      ,container = $('#'+ setter.container)

      ,SHOW = 'layui-show', HIDE = 'layui-hide', THIS = 'layui-this', DISABLED = 'layui-disabled', TEMP = 'template'
      ,APP_BODY = '#LAY_app_body', APP_FLEXIBLE = 'LAY_app_flexible'
      ,FILTER_TAB_TBAS = 'layadmin-layout-tabs'
      ,APP_SPREAD_SM = 'layadmin-side-spread-sm', TABS_BODY = 'layadmin-tabsbody-item'
      ,ICON_SHRINK = 'layui-icon-shrink-right', ICON_SPREAD = 'layui-icon-spread-left'
      ,SIDE_SHRINK = 'layadmin-side-shrink', SIDE_MENU = 'LAY-system-side-menu'

      //通用方法
      ,admin = {
        v: '1.2.1 std'

        //数据的异步请求
        ,req: view.req

        //清除本地 token，并跳转到登入页
        ,exit: view.exit

        //xss 转义
        ,escape: function(html){
          return String(html || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&amp;')
              .replace(/</g, '&lt;').replace(/>/g, '&gt;')
              .replace(/'/g, '&#39;').replace(/"/g, '&quot;');
        }

        //事件监听
        ,on: function(events, callback){
          return layui.onevent.call(this, setter.MOD_NAME, events, callback);
        }

        //发送手机验证码
        ,sendAuthCode: function(options){
          options = $.extend({
            seconds: 60
            ,elemPhone: '#LAY_phone'
            ,elemVercode: '#LAY_vercode'
          }, options);

          var seconds = options.seconds
              ,btn = $(options.elem)
              ,token = null
              ,timer, countDown = function(loop){
            seconds--;
            if(seconds < 0){
              btn.removeClass(DISABLED).html('获取验证码');
              seconds = options.seconds;
              clearInterval(timer);
            } else {
              btn.addClass(DISABLED).html(seconds + '秒后重获');
            }

            if(!loop){
              timer = setInterval(function(){
                countDown(true);
              }, 1000);
            }
          };

          options.elemPhone = $(options.elemPhone);
          options.elemVercode = $(options.elemVercode);

          btn.on('click', function(){
            var elemPhone = options.elemPhone
                ,value = elemPhone.val();

            if(seconds !== options.seconds || $(this).hasClass(DISABLED)) return;

            if(!/^1\d{10}$/.test(value)){
              elemPhone.focus();
              return layer.msg('请输入正确的手机号')
            };

            if(typeof options.ajax === 'object'){
              var success = options.ajax.success;
              delete options.ajax.success;
            }

            admin.req($.extend(true, {
              url: '/auth/code'
              ,type: 'get'
              ,data: {
                phone: value
              }
              ,success: function(res){
                layer.msg('验证码已发送至你的手机，请注意查收', {
                  icon: 1
                  ,shade: 0
                });
                options.elemVercode.focus();
                countDown();
                success && success(res);
              }
            }, options.ajax));
          });
        }
        ,sendEmailAuthCode: function(options){
          options = $.extend({
            seconds: 60
            ,elemPhone: '#LAY_phone'
            ,elemVercode: '#LAY_vercode'
          }, options);

          var seconds = options.seconds
              ,btn = $(options.elem)
              ,token = null
              ,timer, countDown = function(loop){
            seconds--;
            if(seconds < 0){
              btn.removeClass(DISABLED).html('获取验证码');
              seconds = options.seconds;
              clearInterval(timer);
            } else {
              btn.addClass(DISABLED).html(seconds + '秒后重获');
            }

            if(!loop){
              timer = setInterval(function(){
                countDown(true);
              }, 1000);
            }
          };

          options.elemPhone = $(options.elemPhone);
          options.elemVercode = $(options.elemVercode);

          btn.on('click', function(){
            var elemPhone = options.elemPhone
                ,value = elemPhone.val();

            if(seconds !== options.seconds || $(this).hasClass(DISABLED)) return;

            var filter = /^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z-]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]|net|NET|asia|ASIA|com|COM|gov|GOV|mil|MIL|org|ORG|edu|EDU|int|INT|cn|CN|cc|CC)$/;

            if(!filter.test(value)){
              elemPhone.focus();
              return layer.msg('请输入正确的邮箱')
            };

            if(typeof options.ajax === 'object'){
              var success = options.ajax.success;
              delete options.ajax.success;
            }
            //解决点击过快出现发送重复验证码
            btn.addClass(DISABLED);

            admin.req($.extend(true, {
              url: '/auth/code'
              ,type: 'get'
              ,data: {
                email: value
              }
              ,success: function(res){
                layer.msg('验证码已发送至你的邮箱，请注意查收', {
                  icon: 1
                  ,shade: 0
                });
                options.elemVercode.focus();
                countDown();
                success && success(res);
              }
            }, options.ajax));
          });
        }
        //屏幕类型
        ,screen: function(){
          var width = $win.width()
          if(width > 1200){
            return 3; //大屏幕
          } else if(width > 992){
            return 2; //中屏幕
          } else if(width > 768){
            return 1; //小屏幕
          } else {
            return 0; //超小屏幕
          }
        }

        //侧边伸缩
        ,sideFlexible: function(status){
          var app = container
              ,iconElem =  $('#'+ APP_FLEXIBLE)
              ,screen = admin.screen();

          //设置状态，PC：默认展开、移动：默认收缩
          if(status === 'spread'){
            //切换到展开状态的 icon，箭头：←
            iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK);

            //移动：从左到右位移；PC：清除多余选择器恢复默认
            if(screen < 2){
              app.addClass(APP_SPREAD_SM);
            } else {
              app.removeClass(APP_SPREAD_SM);
            }

            app.removeClass(SIDE_SHRINK)
          } else {
            //切换到搜索状态的 icon，箭头：→
            iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD);

            //移动：清除多余选择器恢复默认；PC：从右往左收缩
            if(screen < 2){
              app.removeClass(SIDE_SHRINK);
            } else {
              app.addClass(SIDE_SHRINK);
            }

            app.removeClass(APP_SPREAD_SM)
          }

          layui.event.call(this, setter.MOD_NAME, 'side({*})', {
            status: status
          });
        }

        //弹出面板
        ,popup: view.popup

        //右侧面板
        ,popupRight: function(options){
          //layer.close(admin.popup.index);
          return admin.popup.index = layer.open($.extend({
            type: 1
            ,id: 'LAY_adminPopupR'
            ,anim: -1
            ,title: false
            ,closeBtn: false
            ,offset: 'r'
            ,shade: 0.1
            ,shadeClose: true
            ,skin: 'layui-anim layui-anim-rl layui-layer-adminRight'
            ,area: '300px'
          }, options));
        }

        //主题设置
        ,theme: function(options){
          var theme = setter.theme
              ,local = layui.data(setter.tableName)
              ,id = 'LAY_layadmin_theme'
              ,style = document.createElement('style')
              ,styleText = laytpl([
            //主题色
            '.layui-side-menu,'
            ,'.layadmin-pagetabs .layui-tab-title li:after,'
            ,'.layadmin-pagetabs .layui-tab-title li.layui-this:after,'
            ,'.layui-layer-admin .layui-layer-title,'
            ,'.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child'
            ,'{background-color:{{d.color.main}} !important;}'

            //选中色
            ,'.layui-nav-tree .layui-this,'
            ,'.layui-nav-tree .layui-this>a,'
            ,'.layui-nav-tree .layui-nav-child dd.layui-this,'
            ,'.layui-nav-tree .layui-nav-child dd.layui-this a'
            ,'{background-color:{{d.color.selected}} !important;}'

            //logo
            ,'.layui-layout-admin .layui-logo{background-color:{{d.color.logo || d.color.main}} !important;}'

            //头部色
            ,'{{# if(d.color.header){ }}'
            ,'.layui-layout-admin .layui-header{background-color:{{ d.color.header }};}'
            ,'.layui-layout-admin .layui-header a,'
            ,'.layui-layout-admin .layui-header a cite{color: #f8f8f8;}'
            ,'.layui-layout-admin .layui-header a:hover{color: #fff;}'
            ,'.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #fbfbfb;}'
            ,'.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #fbfbfb;}'
            ,'.layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar{background-color: #fff; background-color: rgba(255,255,255,.5);}'
            ,'.layadmin-pagetabs .layui-tab-title li:after{display: none;}'
            ,'{{# } }}'
          ].join('')).render(options = $.extend({}, local.theme, options))
              ,styleElem = document.getElementById(id);

          //添加主题样式
          if('styleSheet' in style){
            style.setAttribute('type', 'text/css');
            style.styleSheet.cssText = styleText;
          } else {
            style.innerHTML = styleText;
          }
          style.id = id;

          styleElem && $body[0].removeChild(styleElem);
          $body[0].appendChild(style);
          $body.attr('layadmin-themealias', options.color.alias);

          //本地存储记录
          local.theme = local.theme || {};
          layui.each(options, function(key, value){
            local.theme[key] = value;
          });
          layui.data(setter.tableName, {
            key: 'theme'
            ,value: local.theme
          });
        }

        //初始化主题
        ,initTheme: function(index){
          var theme = setter.theme;
          index = index || 0;
          if(theme.color[index]){
            theme.color[index].index = index;
            admin.theme({
              color: theme.color[index]
            });
          }
        }

        //记录最近一次点击的页面标签数据
        ,tabsPage: {}

        //获取页面标签主体元素
        ,tabsBody: function(index){
          return $(APP_BODY).find('.'+ TABS_BODY).eq(index || 0);
        }

        //切换页面标签主体
        ,tabsBodyChange: function(index, options){
          options = options || {};

          admin.tabsBody(index).addClass(SHOW).siblings().removeClass(SHOW);
          events.rollPage('auto', index);

          //执行 {setter.MOD_NAME}.tabsPage 下的事件
          layui.event.call(this, setter.MOD_NAME, 'tabsPage({*})', {
            url: options.url
            ,text: options.text
          });
        }

        //resize事件管理
        ,resize: function(fn){
          var router = layui.router()
              ,key = router.path.join('-');

          if(admin.resizeFn[key]){
            $win.off('resize', admin.resizeFn[key]);
            delete admin.resizeFn[key];
          }

          if(fn === 'off') return; //如果是清除 resize 事件，则终止往下执行

          fn(), admin.resizeFn[key] = fn;
          $win.on('resize', admin.resizeFn[key]);
        }
        ,resizeFn: {}
        ,runResize: function(){
          var router = layui.router()
              ,key = router.path.join('-');
          admin.resizeFn[key] && admin.resizeFn[key]();
        }
        ,delResize: function(){
          this.resize('off');
        }

        //关闭当前 pageTabs
        ,closeThisTabs: function(){
          if(!admin.tabsPage.index) return;
          $(TABS_HEADER).eq(admin.tabsPage.index).find('.layui-tab-close').trigger('click');
        }

        //全屏
        ,fullScreen: function(){
          var ele = document.documentElement
              ,reqFullScreen = ele.requestFullScreen || ele.webkitRequestFullScreen
              || ele.mozRequestFullScreen || ele.msRequestFullscreen;
          if(typeof reqFullScreen !== 'undefined' && reqFullScreen) {
            reqFullScreen.call(ele);
          };
        }

        //退出全屏
        ,exitScreen: function(){
          var ele = document.documentElement
          if (document.exitFullscreen) {
            document.exitFullscreen();
          } else if (document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
          } else if (document.webkitCancelFullScreen) {
            document.webkitCancelFullScreen();
          } else if (document.msExitFullscreen) {
            document.msExitFullscreen();
          }
        }

        //……
      };

  //事件
  var events = admin.events = {
    //伸缩
    flexible: function(othis){
      var iconElem = othis.find('#'+ APP_FLEXIBLE)
          ,isSpread = iconElem.hasClass(ICON_SPREAD);
      admin.sideFlexible(isSpread ? 'spread' : null);
    }

    //刷新
    ,refresh: function(){
      var ELEM_IFRAME = '.layadmin-iframe'
          ,length = $('.'+ TABS_BODY).length;

      if(admin.tabsPage.index >= length){
        admin.tabsPage.index = length - 1;
      }

      var iframe = admin.tabsBody(admin.tabsPage.index).find(ELEM_IFRAME);
      iframe[0].contentWindow.location.reload(true);
    }

    //输入框搜索
    ,serach: function(othis){
      othis.off('keypress').on('keypress',function(e){
        if(!this.value.replace(/\s/g, '')) return;
        //回车跳转
        if(e.keyCode === 13){
          var href = othis.attr('lay-action')
              ,text = othis.attr('lay-text') || '搜索';

          href = href + this.value;
          text = text + ' <span style="color: #FF5722;">'+ admin.escape(this.value) +'</span>';

          //打开标签页
          layui.index.openTabsPage(href, text);

          //如果搜索关键词已经打开，则刷新页面即可
          events.serach.keys || (events.serach.keys = {});
          events.serach.keys[admin.tabsPage.index] = this.value;
          if(this.value === events.serach.keys[admin.tabsPage.index]){
            events.refresh(othis);
          }

          //清空输入框
          this.value = '';
        }
      });
    }

    //点击消息
    ,message: function(othis){
      othis.find('.layui-badge-dot').remove();
    }

    //弹出主题面板
    ,theme: function(){
      admin.popupRight({
        id: 'LAY_adminPopupTheme'
        ,success: function(){
          view(this.id).render('system/theme')
        }
      });
    }

    //便签
    ,note: function(othis){
      var mobile = admin.screen() < 2
          ,note = layui.data(setter.tableName).note;

      events.note.index = admin.popup({
        title: '便签'
        ,shade: 0
        ,offset: [
          '41px'
          ,(mobile ? null : (othis.offset().left - 250) + 'px')
        ]
        ,anim: -1
        ,id: 'LAY_adminNote'
        ,skin: 'layadmin-note layui-anim layui-anim-upbit'
        ,content: '<textarea placeholder="内容"></textarea>'
        ,resize: false
        ,success: function(layero, index){
          var textarea = layero.find('textarea')
              ,value = note === undefined ? '便签中的内容会存储在本地，这样即便你关掉了浏览器，在下次打开时，依然会读取到上一次的记录。是个非常小巧实用的本地备忘录' : note;

          textarea.val(value).focus().on('keyup', function(){
            layui.data(setter.tableName, {
              key: 'note'
              ,value: this.value
            });
          });
        }
      })
    }

    //全屏
    ,fullscreen: function(othis){
      var SCREEN_FULL = 'layui-icon-screen-full'
          ,SCREEN_REST = 'layui-icon-screen-restore'
          ,iconElem = othis.children("i");

      if(iconElem.hasClass(SCREEN_FULL)){
        admin.fullScreen();
        iconElem.addClass(SCREEN_REST).removeClass(SCREEN_FULL);
      } else {
        admin.exitScreen();
        iconElem.addClass(SCREEN_FULL).removeClass(SCREEN_REST);
      }
    }

    //弹出关于面板
    ,about: function(){
      admin.popupRight({
        id: 'LAY_adminPopupAbout'
        ,success: function(){
          view(this.id).render('system/about');
        }
      });
    }

    //弹出更多面板
    ,more: function(){
      admin.popupRight({
        id: 'LAY_adminPopupMore'
        ,success: function(){
          view(this.id).render('system/more');
        }
      });
    }

    //返回上一页
    ,back: function(){
      history.back();
    }

    //主题设置
    ,setTheme: function(othis){
      var index = othis.data('templates.work.task.index')
          ,nextIndex = othis.siblings('.layui-this').data('templates.work.task.index');

      if(othis.hasClass(THIS)) return;

      othis.addClass(THIS).siblings('.layui-this').removeClass(THIS);
      admin.initTheme(index);
    }

    //左右滚动页面标签
    ,rollPage: function(type, index){
      var tabsHeader = $('#LAY_app_tabsheader')
          ,liItem = tabsHeader.children('li')
          ,scrollWidth = tabsHeader.prop('scrollWidth')
          ,outerWidth = tabsHeader.outerWidth()
          ,tabsLeft = parseFloat(tabsHeader.css('left'));

      //右左往右
      if(type === 'left'){
        if(!tabsLeft && tabsLeft <=0) return;

        //当前的left减去可视宽度，用于与上一轮的页标比较
        var  prefLeft = -tabsLeft - outerWidth;

        liItem.each(function(index, item){
          var li = $(item)
              ,left = li.position().left;

          if(left >= prefLeft){
            tabsHeader.css('left', -left);
            return false;
          }
        });
      } else if(type === 'auto'){ //自动滚动
        (function(){
          var thisLi = liItem.eq(index), thisLeft;

          if(!thisLi[0]) return;
          thisLeft = thisLi.position().left;

          //当目标标签在可视区域左侧时
          if(thisLeft < -tabsLeft){
            return tabsHeader.css('left', -thisLeft);
          }

          //当目标标签在可视区域右侧时
          if(thisLeft + thisLi.outerWidth() >= outerWidth - tabsLeft){
            var subLeft = thisLeft + thisLi.outerWidth() - (outerWidth - tabsLeft);
            liItem.each(function(i, item){
              var li = $(item)
                  ,left = li.position().left;

              //从当前可视区域的最左第二个节点遍历，如果减去最左节点的差 > 目标在右侧不可见的宽度，则将该节点放置可视区域最左
              if(left + tabsLeft > 0){
                if(left - tabsLeft > subLeft){
                  tabsHeader.css('left', -left);
                  return false;
                }
              }
            });
          }
        }());
      } else {
        //默认向左滚动
        liItem.each(function(i, item){
          var li = $(item)
              ,left = li.position().left;

          if(left + li.outerWidth() >= outerWidth - tabsLeft){
            tabsHeader.css('left', -left);
            return false;
          }
        });
      }
    }

    //向右滚动页面标签
    ,leftPage: function(){
      events.rollPage('left');
    }

    //向左滚动页面标签
    ,rightPage: function(){
      events.rollPage();
    }

    //关闭当前标签页
    ,closeThisTabs: function(){
      var topAdmin = parent === self ? admin : parent.layui.admin;
      topAdmin.closeThisTabs();
    }

    //关闭其它标签页
    ,closeOtherTabs: function(type){
      var TABS_REMOVE = 'LAY-system-pagetabs-remove';
      if(type === 'all'){
        $(TABS_HEADER+ ':gt(0)').remove();
        $(APP_BODY).find('.'+ TABS_BODY+ ':gt(0)').remove();

        $(TABS_HEADER).eq(0).trigger('click');
      } else {
        $(TABS_HEADER).each(function(index, item){
          if(index && index != admin.tabsPage.index){
            $(item).addClass(TABS_REMOVE);
            admin.tabsBody(index).addClass(TABS_REMOVE);
          }
        });
        $('.'+ TABS_REMOVE).remove();
      }
    }

    //关闭全部标签页
    ,closeAllTabs: function(){
      events.closeOtherTabs('all');
      //location.hash = '';
    }

    //遮罩
    ,shade: function(){
      admin.sideFlexible();
    }

    //呼出IM 示例
    ,im: function(){
      admin.popup({
        id: 'LAY-popup-layim-demo' //定义唯一ID，防止重复弹出
        ,shade: 0
        ,area: ['800px', '300px']
        ,title: '面板外的操作示例'
        ,offset: 'lb'
        ,success: function(){
          //将 views 目录下的某视图文件内容渲染给该面板
          layui.view(this.id).render('layim/demo').then(function(){
            layui.use('im');
          });
        }
      })
    }
  };

  //初始
  !function(){
    //主题初始化，本地主题记录优先，其次为 initColorIndex
    var local = layui.data(setter.tableName);
    if(local.theme){
      admin.theme(local.theme);
    } else if(setter.theme){
      admin.initTheme(setter.theme.initColorIndex);
    }

    //常规版默认开启多标签页
    if(!('pageTabs' in layui.setter)) layui.setter.pageTabs = true;

    //不开启页面标签时
    if(!setter.pageTabs){
      $('#LAY_app_tabs').addClass(HIDE);
      container.addClass('layadmin-tabspage-none');
    }

    //低版本IE提示
    if(device.ie && device.ie < 10){
      view.error('IE'+ device.ie + '下访问可能不佳，推荐使用：Chrome / Firefox / Edge 等高级浏览器', {
        offset: 'auto'
        ,id: 'LAY_errorIE'
      });
    }

  }();

  //admin.prevRouter = {}; //上一个路由

  //监听 tab 组件切换，同步 index
  element.on('tab('+ FILTER_TAB_TBAS +')', function(data){
    admin.tabsPage.index = data.index;
  });

  //监听选项卡切换，改变菜单状态
  admin.on('tabsPage(setMenustatus)', function(router){
    var pathURL = router.url, getData = function(item){
          return {
            list: item.children('.layui-nav-child')
            ,a: item.children('*[lay-href]')
          }
        }
        ,sideMenu = $('#'+ SIDE_MENU)
        ,SIDE_NAV_ITEMD = 'layui-nav-itemed'

        //捕获对应菜单
        ,matchMenu = function(list){
          list.each(function(index1, item1){
            var othis1 = $(item1)
                ,data1 = getData(othis1)
                ,listChildren1 = data1.list.children('dd')
                ,matched1 = pathURL === data1.a.attr('lay-href');

            listChildren1.each(function(index2, item2){
              var othis2 = $(item2)
                  ,data2 = getData(othis2)
                  ,listChildren2 = data2.list.children('dd')
                  ,matched2 = pathURL === data2.a.attr('lay-href');

              listChildren2.each(function(index3, item3){
                var othis3 = $(item3)
                    ,data3 = getData(othis3)
                    ,matched3 = pathURL === data3.a.attr('lay-href');

                if(matched3){
                  var selected = data3.list[0] ? SIDE_NAV_ITEMD : THIS;
                  othis3.addClass(selected).siblings().removeClass(selected); //标记选择器
                  return false;
                }

              });

              if(matched2){
                var selected = data2.list[0] ? SIDE_NAV_ITEMD : THIS;
                othis2.addClass(selected).siblings().removeClass(selected); //标记选择器
                return false
              }

            });

            if(matched1){
              var selected = data1.list[0] ? SIDE_NAV_ITEMD : THIS;
              othis1.addClass(selected).siblings().removeClass(selected); //标记选择器
              return false;
            }

          });
        }

    //重置状态
    sideMenu.find('.'+ THIS).removeClass(THIS);

    //移动端点击菜单时自动收缩
    if(admin.screen() < 2) admin.sideFlexible();

    //开始捕获
    matchMenu(sideMenu.children('li'));
  });

  //监听侧边导航点击事件
  element.on('nav(layadmin-system-side-menu)', function(elem){
    if(elem.siblings('.layui-nav-child')[0] && container.hasClass(SIDE_SHRINK)){
      admin.sideFlexible('spread');
      layer.close(elem.data('templates.work.task.index'));
    };
    admin.tabsPage.type = 'nav';
  });

  //监听选项卡的更多操作
  element.on('nav(layadmin-pagetabs-nav)', function(elem){
    var dd = elem.parent();
    dd.removeClass(THIS);
    dd.parent().removeClass(SHOW);
  });

  //同步路由
  var setThisRouter = function(othis){
    var layid = othis.attr('lay-id')
        ,attr = othis.attr('lay-attr')
        ,index = othis.index();

    admin.tabsBodyChange(index, {
      url: attr
    });
    //location.hash = layid === setter.entry ? '/' : attr;
  }
      ,TABS_HEADER = '#LAY_app_tabsheader>li';

  //标签页标题点击
  $body.on('click', TABS_HEADER, function(){
    var othis = $(this)
        ,index = othis.index();

    admin.tabsPage.type = 'tab';
    admin.tabsPage.index = index;

    setThisRouter(othis);
  });

  //监听 tabspage 删除
  element.on('tabDelete('+ FILTER_TAB_TBAS +')', function(obj){
    var othis = $(TABS_HEADER+ '.layui-this');

    obj.index && admin.tabsBody(obj.index).remove();
    setThisRouter(othis);

    //移除resize事件
    admin.delResize();
  });

  //页面跳转
  $body.on('click', '*[lay-href]', function(){
    var othis = $(this)
        ,href = othis.attr('lay-href')
        ,text = othis.attr('lay-text')
        ,router = layui.router();

    admin.tabsPage.elem = othis;
    //admin.prevRouter[router.path[0]] = router.href; //记录上一次各菜单的路由信息

    //执行跳转
    var topLayui = parent === self ? layui : top.layui;
    topLayui.index.openTabsPage(href, text || othis.text());
  });

  //点击事件
  $body.on('click', '*[layadmin-event]', function(){
    var othis = $(this)
        ,attrEvent = othis.attr('layadmin-event');
    events[attrEvent] && events[attrEvent].call(this, othis);
  });

  //tips
  $body.on('mouseenter', '*[lay-tips]', function(){
    var othis = $(this);

    if(othis.parent().hasClass('layui-nav-item') && !container.hasClass(SIDE_SHRINK)) return;

    var tips = othis.attr('lay-tips')
        ,offset = othis.attr('lay-offset')
        ,direction = othis.attr('lay-direction')
        ,index = layer.tips(tips, this, {
      tips: direction || 1
      ,time: -1
      ,success: function(layero, index){
        if(offset){
          layero.css('margin-left', offset + 'px');
        }
      }
    });
    othis.data('templates.work.task.index', index);
  }).on('mouseleave', '*[lay-tips]', function(){
    layer.close($(this).data('templates.work.task.index'));
  });

  //窗口resize事件
  var resizeSystem = layui.data.resizeSystem = function(){
    //layer.close(events.note.index);
    layer.closeAll('tips');

    if(!resizeSystem.lock){
      setTimeout(function(){
        admin.sideFlexible(admin.screen() < 2 ? '' : 'spread');
        delete resizeSystem.lock;
      }, 100);
    }

    resizeSystem.lock = true;
  }
  $win.on('resize', layui.data.resizeSystem);

  //接口输出
  exports('admin', admin);
});